// 封装 fetch 请求
export const request = (url, method = "GET", params = {}, options = {}) => {
  const token = localStorage.getItem("token") || "";
  // 设置默认选项
  const mergedOptions = {
    method, // 默认请求方法为 GET
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${token}`,
    },
    body: JSON.stringify(params),
    ...options,
    // 其他默认配置可以在这里添加
  };

  if (method.toLowerCase() === "get") {
    delete mergedOptions.body; // GET 请求不需要 body
    if (params && Object.keys(params).length) {
      // 如果是 GET 请求且有参数，则将参数拼接到 URL 上
      const queryString = new URLSearchParams(params).toString();
      url += `?${queryString}`;
    }
  }

  return fetch(url, mergedOptions)
    .then((response) => response.json())
    .then((data) => {
      if (data.code === 200) {
        return data.data; // 返回数据部分
      } else {
        if (data.code === 401) {
          // 如果未登录或 token 过期，可以在这里处理重定向到登录页面等逻辑
          alert("未登录或登录过期，请重新登录");
          // window.location.href = '/login'; // 示例：重定向到登录页面
        }
        throw new Error(data.message || "请求失败");
      }
    })
    .catch((error) => console.error("Error:", error));
};
